package com.hang.service;

import com.hang.entity.Item;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hang.model.dto.base.ConditionDTO;
import com.hang.model.dto.request.ItemModelDTO;
import com.hang.model.dto.request.ItemQueryDTO;
import com.hang.model.dto.request.PersonalStaticsDTO;
import com.hang.model.dto.response.ItemApplyInfoVO;
import com.hang.model.dto.response.ItemQueryListVO;
import com.hang.model.dto.response.PersonalTaskVO;
import com.hang.model.vo.ItemInfoDetailModel;

import java.util.List;

/**
 *
 */
public interface IItemService extends IService<Item> {

    //新建项目
    void createItem(ItemModelDTO itemModelDTO);

    //编辑项目
    void editItem(ItemModelDTO itemModelDTO);

    //删除项目
    void deleteItem(Long itemId);

    //按条件搜索符合的项目列表(带分页)
    ItemQueryListVO getItemsByCondition(ConditionDTO conditionDTO);

    //获取项目详情
    ItemInfoDetailModel getItemDetailByItemId(Long itemId);

    //查看用户的项目空间列表
    ItemQueryListVO getMyItemsByCondition(ItemQueryDTO itemQueryDTO);

    //申请加入项目
    void applyInItem(Long itemId, Long userId);

    //管理员查看申请列表
    ItemApplyInfoVO getItemApplyList(Long itemId, Long userId);

    //获取近n天的任务开发情况
    List<PersonalTaskVO> getPersonalStaticsCondition(PersonalStaticsDTO personalStaticsDTO);

    //获取近n天的开发任务情况【整个项目】
    PersonalTaskVO getItemStaticsCondition(Long itemId);
}
